const { Breeze , DefaultConfig } = require("springbreeze") ,
    { Web , ErrorHandler , PackageHandler , AuthHandler } = require("breeze-web") ,
    { Redis } = require("breeze-redis") ,
    { Mongo } = require("breeze-mongo") ,
    //  Mongo  = require("../breeze-mongodb/lib/MongoMiddleware")
    { Seneca } = require("breeze-seneca")

DefaultConfig.middlewares.push({
    name : "redis" ,
    require : Redis , 
    desc : "redis服务" ,
    host : "192.168.0.121",
    port : "6380",
    password : "123321" ,
    db : 1 
})

DefaultConfig.middlewares.push({
    name : "mongo" ,
    require : Mongo , 
    desc : "Mongo中间件服务" ,
    uris : "mongodb://192.168.0.121:27017/test" ,
    modelPath : __dirname + "/model" ,
    opt : {
        // bufferCommands : false , //是否禁用本地缓存
        // bufferMaxEntries : 0 ,   //配合bufferCommands使用
        // user : "" ,              //auth.user
        // pass : "" ,              //auth.password 
        // autoIndex : false ,      //开发模式可以自动创建索引,生成环境中取消(false)
        // dbName : ""  ,           //连接的数据库名
        keepAlive: true,
        // autoReconnect : true ,      //是否自动重连
        // reconnectTries : Number.MAX_VALUE ,       //重连次数,默认最大次数
        // reconnectInterval : 1*1000  ,    //重连时间,单位秒,1分钟内是否可以恢复
        poolSize : 10 ,             //最大socket连接数,不一定无限大就好，根据测试结果设置
        useNewUrlParser : true ,
        useUnifiedTopology: true 
    }
})

DefaultConfig.middlewares.push({
    name : "seneca" ,
    require : Seneca , 
    desc : "seneca中间件" ,
    type : "tcp" ,
    port : 8089 ,
    serverPath : __dirname + "/server" ,
    //不用多服务器做测试了，就用但节点测试
    clients : [
        { host : "127.0.0.1" , port : 9089 , pin : "Test:*" , type : "tcp"}
    ]
})

DefaultConfig.middlewares.push({
    name : "web" ,
    require : Web ,
    desc : "web服务" ,
    port : 9001 ,
    actionPath : __dirname + "/action" ,
    handler : [
        { name : "错误统一处理插件" , entity : ErrorHandler } ,
        { name : "权限验证处理插件" , entity : AuthHandler } ,
        { name : "请求统一处理插件" , entity : PackageHandler } ,
    ]
})


const breeze = new Breeze( DefaultConfig )

breeze.start()
